#include "usart3.h"
u8 USART3_RX_BUF[USART3_REC_LEN];  // 接收数据缓冲区，大小为USART3_REC_LEN
u16 USART3_RX_STA = 0;             // 接收状态标志（0-14位：数据长度；15位：接收完成标志）
void usart3_init(u32 bound)
{ 
	  GPIO_InitTypeDef GPIO_InitStructure;
	  NVIC_InitTypeDef NVIC_InitStructurea;
	  USART_InitTypeDef USART_InitStruct;
	 
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);  // 使能USART3时钟（APB1总线）
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   // 使能GPIOB时钟（APB2总线）
    USART_DeInit(USART3);  // 复位USART3（可选，确保初始状态）
	
	  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;// 复用推挽输出（TX）
	  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
	  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	  GPIO_Init(GPIOB,&GPIO_InitStructure);    
	
	  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;// 浮空输入（RX）
	  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
	  GPIO_Init(GPIOB,&GPIO_InitStructure);   
	/*
	  NVIC_InitStructurea.NVIC_IRQChannel=USART3_IRQn;
	  NVIC_InitStructurea.NVIC_IRQChannelCmd=ENABLE;
	  NVIC_InitStructurea.NVIC_IRQChannelPreemptionPriority=2;
	  NVIC_InitStructurea.NVIC_IRQChannelSubPriority=2;
	  NVIC_Init(&NVIC_InitStructurea);          
	*/	
		USART_ITConfig(USART3,USART_IT_RXNE,ENABLE); // 使能接收中断（RXNE：接收缓冲区非空中断）
	
	  USART_InitStruct.USART_BaudRate=bound;//波特率
		USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//无硬件流控
		USART_InitStruct.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;//收发模式
		USART_InitStruct.USART_Parity=USART_Parity_No;//无奇偶校验
		USART_InitStruct.USART_StopBits=USART_StopBits_1;//1位停止位
		USART_InitStruct.USART_WordLength=USART_WordLength_8b;//8位数据长度
	  USART_Init(USART3,&USART_InitStruct);                 
		
		USART_Cmd(USART3,ENABLE);//使能USART3
	
	  
}
/*
void USART3_IRQHandler()//中断服务函数
{ 
	 u8 res;
   if(USART_GetITStatus(USART3,USART_IT_RXNE)!=RESET)// 判断是否是接收中断
	 {
		   
	     res=USART_ReceiveData(USART3);// 读取接收到的数据
		   USART3_RX_BUF[USART3_RX_STA&0x7FFF]=res;// 存入缓冲区（低15位作为索引）
		   USART3_RX_STA++;                         // 增加字节数
		 if(USART3_RX_STA>(USART3_REC_LEN-1))USART3_RX_STA=0;// 防止溢出，循环缓冲	+; 
		  USART3_RX_STA|=0x8000;// 设置接收完成标志（第15位）
		 USART_ClearITPendingBit(USART3,USART_IT_RXNE);//清除中断标志
		   
	  }
}
*/





	